/*
 * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: CC0-1.0
 *
 * Zigbee CLI Example
 *
 * This example code is in the Public Domain (or CC0 licensed, at your option.)
 *
 * Unless required by applicable law or agreed to in writing, this
 * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied.
 */

#pragma once

#include "zb_config_platform.h"
/* Zigbee CLI example configuration*/
#define ZIGBEE_CHANNEL                  13          /* initial channel setting */
#define ESP_ZIGBEE_CLI_ENDPOINT         64          /* config Zigbee CLI endpoint */
#define MAX_CHILDREN                    10          /* the max amount of connected devices */
#define INSTALLCODE_POLICY_ENABLE       false       /* enable the install code policy for security */

#if CONFIG_SOC_IEEE802154_SUPPORTED
#define ESP_ZB_DEFAULT_RADIO_CONFIG()                         \
    {                                                         \
        .radio_mode = ZB_RADIO_MODE_NATIVE,                   \
    }

#else
#define ESP_ZB_DEFAULT_RADIO_CONFIG()                         \
    {                                                         \
        .radio_mode = ZB_RADIO_MODE_UART_RCP,                 \
        .radio_uart_config = {                                \
            .port = 1,                                        \
            .uart_config =                                    \
                {                                             \
                    .baud_rate = 460800,                      \
                    .data_bits = UART_DATA_8_BITS,            \
                    .parity = UART_PARITY_DISABLE,            \
                    .stop_bits = UART_STOP_BITS_1,            \
                    .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,    \
                    .rx_flow_ctrl_thresh = 0,                 \
                    .source_clk = UART_SCLK_DEFAULT,          \
                },                                            \
            .rx_pin = CONFIG_PIN_TO_RCP_RX,                   \
            .tx_pin = CONFIG_PIN_TO_RCP_TX,                   \
        },                                                    \
    }
#endif


#define ESP_ZB_DEFAULT_HOST_CONFIG()                                \
    {                                                               \
        .host_connection_mode = ZB_HOST_CONNECTION_MODE_CLI_UART,   \
        .host_uart_config = {                                       \
            .port = 0,                                              \
            .uart_config =                                          \
                {                                                   \
                    .baud_rate =  115200,                           \
                    .data_bits = UART_DATA_8_BITS,                  \
                    .parity = UART_PARITY_DISABLE,                  \
                    .stop_bits = UART_STOP_BITS_1,                  \
                    .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,          \
                    .rx_flow_ctrl_thresh = 0,                       \
                    .source_clk = UART_SCLK_DEFAULT,                \
                },                                                  \
            .rx_pin = UART_PIN_NO_CHANGE,                           \
            .tx_pin = UART_PIN_NO_CHANGE,                           \
        },                                                          \
    }

#define ESP_ZB_ZC_CONFIG()                                                              \
    {                                                                                   \
        .esp_zb_role = ESP_ZB_DEVICE_TYPE_COORDINATOR,                                  \
        .install_code_policy = INSTALLCODE_POLICY_ENABLE,                               \
        .nwk_cfg.zczr_cfg = {                                                           \
            .max_children = MAX_CHILDREN,                                               \
        },                                                                              \
    }
